home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 38 / Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso / -in_the_mag- / reader_requests / dice_v3.15 / lib / extra / waitmsg.c < prev    next >
C/C++ Source or Header  |  1999-01-26  |  818b  |  36 lines

  1.  
  2. /*
  3.  *  WAITMSG.C
  4.  *
  5.  *    (c)Copyright 1992-1997 Obvious Implementations Corp.  Redistribution and
  6.  *    use is allowed under the terms of the DICE-LICENSE FILE,
  7.  *    DICE-LICENSE.TXT.
  8.  *
  9.  *  Wait for a message to be returned, suitable when another task is doing
  10.  *  the ReplyMsg().  NOT suitable for when an interrupt is doing the
  11.  *  ReplyMsg() (must use Disable()/Enable() pair instead of Forbid()/
  12.  *  Permit() if used with interrupts)
  13.  */
  14.  
  15. #include <exec/types.h>
  16. #include <exec/ports.h>
  17. #include <clib/exec_protos.h>
  18. #include <stdio.h>
  19.  
  20. typedef struct Message Message;
  21. typedef struct MsgPort MsgPort;
  22.  
  23. void WaitMsg(Message *);
  24.  
  25. void
  26. WaitMsg(msg)
  27. Message *msg;
  28. {
  29.     while (msg->mn_Node.ln_Type != NT_REPLYMSG)
  30.     Wait(1 << msg->mn_ReplyPort->mp_SigBit);
  31.     Forbid();
  32.     Remove(&msg->mn_Node);
  33.     Permit();
  34. }
  35.  
  36.